﻿using System;

namespace exp2_1
{
    //照片类
    class Photo
    {
        string _title;
        //构造函数，对象初始化
        public Photo(string title)
        {
            this._title = title;
        }
        //只读属性，返回标题
        public string Title
        {
            get
            {
                return _title;
            }
        }

    }
    //相册类
    class Album
    {
        // 该数组用于存放照片
        Photo[] photos;
        //构造函数初始化对象
        public Album(int capacity)
        {
            photos = new Photo[capacity];
        }
        //带有int参数的Photo索引器，实现按照索引查找照片
        public Photo this[int index]
        {
            //索引器的读功能实现
            get
            {
                if (index < 0 || index >= photos.Length)
                {
                   Console.WriteLine("索引无效！"); 
                }

                return photos[index];
            }
            //索引器的写功能实现
            set
            {
                if (index < 0 || index >= photos.Length)
                {
                    Console.WriteLine("索引无效！"); 
                    return;
                }

                photos[index] = value;
            }
        }
        //带有string参数的索引器，实现按照标题查找照片
        public Photo this[string title]
        {
            get
            {
                // 遍历数组中的所有照片
                foreach (Photo p in photos)
                {
                    // 将照片中的标题与索引器参数进行比较
                    if (p.Title == title)
                        return p;
                }
                Console.WriteLine("未找到");
                // 使用 null 指示失败
                return null;
            }
        }

    }
    
    class Program
    {
        static void Main(string[] args)
        {
            /*目标
             1.已知相册类为Album，照片类Photo
             2.使用索引器设计容量为5的相册存放照片
             3.需要实现索引器的读/写功能*/
            //建立一个容量为5的相册
            Album cute = new Album(5);
            //创建五张照片
            Photo first = new Photo("可乐");
            Photo second = new Photo("雪碧");
            Photo third = new Photo("西瓜");
            Photo fourth = new Photo("梅花十三");
            Photo fifth = new Photo("伍六七");
            //向相册加载照片
            cute[0] = first;
            cute[1] = second;
            cute[2] = third;
            cute[3] = fourth;
            cute[4] = fifth;
            Console.WriteLine("测试样例：\ncute[0]\ncute[‘梅花十三’]");
            Console.WriteLine("输出结果：");
            //按照索引检索照片
            Photo photo1 = cute[0];
            Console.WriteLine(photo1.Title);
            //按照名字检索照片
            Photo photo2 = cute["梅花十三"];
            Console.WriteLine(photo2.Title);
        }
    }
}